package com.zw.pdm.module.file.service;

import com.zw.pdm.entity.basic.Org;
import com.zw.pdm.entity.production.FilePlan;
import com.zw.pdm.entity.production.FileSheet;
import com.zw.pdm.module.basic.repository.OrgRepository;
import com.zw.pdm.module.designtask.repository.DsnProStructRepository;
import com.zw.pdm.module.file.repository.FilePlanRepository;
import com.zw.pdm.module.file.repository.FileSheetRepository;
import com.zw.pdm.module.system.service.LogService;
import com.zw.pdm.util.ShiroUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;

/**
 * @author mayongfeng
 * @version 1.0.0
 * @ClassName CreateFileServer.java
 * @Description TODO
 * @createTime 2020年12月14日 08:50:00
 */
@Service
@SuppressWarnings("all")
public class FileAddService {

    @Autowired
    private FileSheetRepository fileSheetRepository;
    @Autowired
    private OrgRepository orgRepository;
    @Autowired
    private FilePlanRepository filePlanRepository;
    @Autowired
    private DsnProStructRepository dsnProStructRepository;
    @Autowired
    private LogService logService;

    public int firstFileSave(FileSheet fileSheet, String[] fileName, Integer[] picecNum, Integer[] pageNum, String[] remark) {
        /** myf判断一个项目一个专业一个部分只能提报一回*/
        int countINt = fileSheetRepository.countBySpecialIdAndPartIdAndProCodeAndIsDel(fileSheet.getSpecialId(), fileSheet.getPartId(), fileSheet.getProCode(), 0);
        if (countINt > 0) {
            return -2;
        }

        /** 初始化主表里面的数据*/
        fileSheet = genFileSheet(fileSheet);
        for (int i = 0; i < fileName.length; i++) {
            FilePlan filePlan = new FilePlan();
            filePlan.setFileName(fileName[i]);
            filePlan.setPicecNum(picecNum[i]);
            filePlan.setPageNum(pageNum[i]);
            if (remark.length > 0) {
                filePlan.setRemark(remark[i]);
            }
            filePlan.setSheetId(fileSheet.getId());
            filePlan.setIsDel(0);
            filePlan.setCreateTime(new Date());
            filePlanRepository.save(filePlan);

        }
        logService.saveLog("存档清单保存", "ID：" + fileSheet.getId());
        return 1;
    }

    /**
     * @Author mayongfeng
     * @Date 10:07 2020/12/14
     * @Description 初始化主表里面的数据
     **/
    private FileSheet genFileSheet(FileSheet fileSheet) {
        //保存原始的部分名称
        fileSheet.setPart(dsnProStructRepository.getOne(fileSheet.getPartId()).getProPart());
        //第一提报人员工编号
        fileSheet.setCreateCodeOne(ShiroUtils.getLoginName());
        //第一提报人姓名
        fileSheet.setCreateNameOne(ShiroUtils.getUser().getName());
        //第二提报人姓名
        fileSheet.setCreateNameTwo(ShiroUtils.getUser().getName());
        //第二提报人员工编号
        fileSheet.setCreateCodeTwo(ShiroUtils.getLoginName());
        //提报人的部门Id
        fileSheet.setPostUserId(ShiroUtils.getUserId());
        //部门Id
        fileSheet.setDeptId(ShiroUtils.getUser().getDept());
        //部门名称
        fileSheet.setDeptName(ShiroUtils.getUser().getDeptName());
        //科室Id
        fileSheet.setSectionId(ShiroUtils.getUser().getDeptId());
        //科室名称
        fileSheet.setSectionName(ShiroUtils.getUser().getBranchName());
        Org dept = orgRepository.getOne(ShiroUtils.getUser().getOrgId());
        if (dept != null) {
            fileSheet.setPostDept(dept.getName());
        }
        //创建时间
        fileSheet.setCreateTime(new Date());
        //状态 1=未提交，2=已提交，3=被驳回，4=撤消，5=全部审核通过，默认为：1
        fileSheet.setStatus(1);
        //表单类型 1=原始，2=补存：默认：1
        fileSheet.setSheetType(1);
        //是否可以变更  0=否，1=是：默认：0
        fileSheet.setMayChange(0);
        //删除状态 0：默认， 1：删除：默认：0
        fileSheet.setIsDel(0);
        /** 设计下发状态0=未下发,1=已下发*/
        fileSheet.setDesignStatus(0);
        /** 档案组签收状态0=未签收,1=已签收*/
        fileSheet.setFileSignStatus(0);
        /** 项目完结状态 0:未完结,1=已完结*/
        fileSheet.setEndStatus(0);
        return fileSheetRepository.save(fileSheet);
    }
}
